package com.rickie.model.valueobjects;

/**
 * @author rickie
 * @version 1.0.0
 * @ClassName EventType.java
 * @Description 事件类型
 * @createTime 2021年07月24日 23:26:00
 */
public enum EventType {

    /**
     * 1.货物到港口请求
     */
    RECEIVE(false),
    /**
     * 2.货物装载请求
     */
    LOAD(true),
    /**
     * 3.货物卸载请求
     */
    UNLOAD(true),
    /**
     * 4.货物到达海关请求
     */
    CUSTOMS(false),
    /**
     * 5.客户索取货物请求
     */
    CLAIM(false);
    /**
     * 是否需要航程号
     */
    private final boolean voyageRequired;

    EventType(boolean voyageRequired){
        this.voyageRequired = voyageRequired;
    }

    /**
     * True 表示该事件类型需要一个关联的航程号
     */
    public boolean requiresVoyage() {
        return voyageRequired;
    }

    /**
     * True 表示该事件类型禁止关联航程号
     */
    public boolean prohibitsVoyage() {
        return !requiresVoyage();
    }

    /**
     * 判断事件类型是否相同
     */
    public boolean sameValueAs(EventType other) {
        return other != null && this.equals(other);
    }
}
